/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author root
 */
public class ProdutoManager 
{
        
    public ProdutoManager()
    {
    }
    
    public Produto getProdutoByID(int id) //retorna produto pelo ID
    {
        Produto produto;
        Session hSession;
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        produto = (Produto) hSession.createQuery("from Produto as x where x.id=:id").setParameter("id", id).uniqueResult();
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
        {
            tx.commit();
        }
       
        return produto;
    }
    
    public ArrayList getAllProdutos() //retorna todos os produtos disponiveis
    {
        Session hSession;
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        ArrayList<Produto> produtos = (ArrayList<Produto>) hSession.createQuery("from Produto").list();       
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
        {
            tx.commit();
        }
        return produtos;
    }
    
    public boolean insertProduto(Produto produto) //insere produto no BD
    {
        
        Session hSession;
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        Produto prod = new Produto();
        
        prod.setCategoria(produto.getCategoria());
        prod.setDescricao(produto.getDescricao());
        prod.setFoto(produto.getFoto());
        prod.setNome(produto.getNome());
        prod.setQtdEmEstoque(produto.getQtdEmEstoque());
        prod.setStatus(produto.isStatus());
        prod.setValor(produto.getValor());
        hSession.save(prod);
        
        hSession.getTransaction().commit();
        if(!tx.wasCommitted())
        {
            tx.commit();
        }        
        return true;
    }
    
    public boolean updateProduto(int id, Produto prodData)
    {
        Session hSession;
        hSession = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = hSession.beginTransaction();
        
        Produto prod =(Produto) hSession.load(Produto.class, id);
        prod.setCategoria(prodData.getCategoria());
        prod.setDescricao(prodData.getDescricao());
        prod.setNome(prodData.getNome());
        prod.setQtdEmEstoque(prodData.getQtdEmEstoque());
        prod.setStatus(prodData.isStatus());
        prod.setValor(prodData.getValor());
        
        hSession.getTransaction().commit();        
        if(!tx.wasCommitted())
        {
            tx.commit();
        }        
        return true;
    }
}
